1. Field of the Invention
The invention is related to the areas of mathematical programming modeling and object oriented programming languages. More specifically, the invention is related to high level mathematical programming modeling languages.
2. Discussion of Prior Art
As information technologies grow to maturity and are widely adopted by businesses, optimization based, intelligent decision making becomes increasingly important for companies to gain a competitive edge in the market place. Incorporating sophisticated algorithms in business application software may enable the allocation of scarce resources, improve operation efficiency, reduce costs, and increase profits. Mathematical programming (e.g., linear programming, mixed integer programming, etc.) is widely used for algorithms in real world applications.
In mathematical programming the proper values for a set of variables (called decision variables) are determined in such a way that a utility function (called an objective function) of the decision variables is minimized or maximized, while satisfying a set of constraints involving the decision variables. A mathematical programming model may be used to represent many business decision making problems. In recent years, there has been an increased usage of mathematical programming algorithms in business application software, especially by small niche vendors.
In the prior art, software, called a mathematical programming solver (which will be referred to as a solver), is used to solve for the decision variables (and to thereby solve the problem). Many commercial solvers are available today, especially for special types of mathematical programming, such as linear programming, mixed integer programming, and for special types of nonlinear programming, for example. The software that aids in setting up the problem, which is also the software that later provides the input for the solver, is called a mathematical programming modeling language, or a modeling language for short. Once the mathematical formulation for a class of business decision making problems is developed, one can use the modeling language to describe the mathematical programming model to the computer. When the code written in the modeling language is executed (or interpreted), numerical data for the specific objective function and constraints may be generated and fed to the solver.
There have been several attempts to provide modeling languages. The use of a modeling language leads to a dramatic reduction in the effort needed to use mathematical programming algorithms. In a typical example, 10,000 lines of C/C++ code for building a mathematical programming model can be replaced by about 100 lines of code in a modeling language. One example of a prior art modeling language is Algebraic Mathematical Programming Language (AMPL), developed by Bell Laboratories in the 1990s, which is regarded by some as an industry standard. Many other vendors have developed their own modeling languages, such as General Algebraic Modeling System (GAMS, available from GAMS Development Corporation, Washington, D.C.) and Xpress (available from Dash Optimization, United Kingdom), for example. AMPL and other modeling languages suffer from several drawbacks.
Prior art modeling languages are independent high-level languages. In the environments of the prior art modeling languages, the main focus is building a mathematical programming model. The prior art modeling languages are not general purpose programming languages. Consequently, it is not efficient or it may not be possible to use the prior art modeling languages to build other aspects of an application.
AMPL, and many other modeling languages, are interpretive languages. Consequently, a high runtime penalty is associated with large scale, CPU intensive number crunching. As a result, modeling languages such as AMPL and GAMS are generally used or implemented as analyst's tools. Prior art modeling languages are rarely used in production software. AMPL is used to initially experiment with different model formulations.